// 身份证校验
export const idCard = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/;
// 手机号校验 
export const telReg = /^1[3456789]\d{9}$/;
// 用户名正则，4到16位（字母，数字，下划线，减号）
export const userReg = /^[a-zA-Z0-9_-]{4,16}$/;
// 账号6-20位字母和数字组合
export const accountNum = /^(?![0-9]*$)(?![a-zA-Z]*$)[a-zA-Z0-9]{6,20}$/;
// 密码6-20位英文字母、数字或者符号（除空格），且字母、数字和标点符号至少包含两种
export const passReg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/;
// 邮箱
export const emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
// 只能为数字
export const numReg = /^\d+$/;
// 根据身份证获取出生年月日
export function getBirthdayFromIdCard(idCard) {  
  let birthday = '';  
  if(idCard != null && idCard !== ''){  
    if(idCard.length === 15){  
      birthday = '19'+idCard.substr(6,6);  
    } else if(idCard.length === 18){  
      birthday = idCard.substr(6,8);  
    }  
    birthday = birthday.replace(/(.{4})(.{2})/,'$1-$2-');  
  }  
  return birthday;  
}
// 手机号码隐藏中间4位
export function phoneHideMiddle(val) {
  if (val) {
    return `${val.substring(0, 3)}****${val.substring(val.length - 4)}`
  }
  else {
    return '';
  }
}
// 保留两位小数
export function keepTwoNum(val) {
  val = Number(val);
  return val.toFixed(2);
}
// 每三位逗号隔开,后面补两位小数，多用于金额数字
export function floatThree(value) {
  // console.log(value)
  value = '' + value;
  if (!value) return '0.00';
  let intPart = parseInt(Number(value));// 获取整数部分
  let intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); // 将整数部分逢三一断
  let floatPart = '.00'; // 预定义小数部分
  let value2Array = value.split('.');
  if (value2Array.length === 2) {
    floatPart = value2Array[1].toString(); // 拿到小数部分
    if (floatPart.length === 1) { // 补0,实际上用不着
      return intPartFormat + '.' + floatPart + '0';
    } else {
      return intPartFormat + '.' + floatPart;
    }
  } else {
    return intPartFormat + floatPart;
  }
}
// 银行尾号四位数
export function bankCardNumLastFour(val) {
  // val = Number(val);
  if (val) {
    return val.substring(val.length - 4);
  }
}
// 隐藏证件号
export function certIdHide(val) {
  if (val) {
    let certId = val.substring(0, 1) + '****************' + val.substring(val.length - 1)
    return certId
  }
}
// 获取Url携带的地址参数
export function getSearchParams() {
  const params = {};
  window.location.search &&
    window.location.search.match(/\??&?([^\?&]+)=([^\?&]+)/g).forEach(str => {
      str = str.slice(1);
      let arrs = str.split('=');
      params[arrs[0]] = arrs[1];
    });
  return params;
}
// 日期格式化
export function dateFormat(fmt, date) {
  let ret;
  const opt = {
    'Y+': date.getFullYear().toString(),        // 年
    'm+': (date.getMonth() + 1).toString(),     // 月
    'd+': date.getDate().toString(),            // 日
    'H+': date.getHours().toString(),           // 时
    'M+': date.getMinutes().toString(),         // 分
    'S+': date.getSeconds().toString()          // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  };
  for (let k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt);
    if (ret) {
      fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
    }
  }
  return fmt;
}